package com.woniuxy.service;

import com.woniuxy.controller.form.ProductCatForm;
import com.woniuxy.exception.DdException;
import com.woniuxy.model.PawnProductCat;
import com.baomidou.mybatisplus.extension.service.IService;
import com.woniuxy.utils.Result;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author hujianying
 * @since 2022-03-23
 */
public interface PawnProductCatService extends IService<PawnProductCat> {

    /**
     * 大类分页展示
     * @param pcf 分页参数
     * @return data为productCatInfoPage
     */
    Result getAllProductCat(ProductCatForm pcf);

    /**
     * 商品大类模糊查询
     * @param pcf 中模糊查询参数
     * @return data为pawnProductCatPage
     */
    Result getProductCatByLike(ProductCatForm pcf) throws DdException;

    /**
     * 商品大类新增
     * @param pcf 商品分类相关信息
     * @return data为null
     */
    Result saveProductCat(@RequestBody ProductCatForm pcf) throws DdException;
    /**
     * 商品分类修改
     * @param pcf 商品分类相关信息
     * @return data为null
     */
    Result updateProductCat(@RequestBody ProductCatForm pcf) throws DdException;
    /**
     * 商品大类删除
     * @param pcf 根据分类id删除
     * @return data为null
     */
    Result deleteProductCat(@RequestBody ProductCatForm pcf) throws DdException;

    /**
     * 根据catCode查询
     * @param pcf
     * @return ProductCat对象
     */
    Result getProductCatByCatCode(ProductCatForm pcf);

    /**
     * 查全部小类
     * @param pcf 分页参数
     * @return 返回一个小类的info
     */
    Result getAllXProductCat(ProductCatForm pcf);

    /**
     * 根据大类查对应全部小类
     * @param pcf 获取大类类型
     * @return 返回小类集合
     */
    Result getXProductCatByD(ProductCatForm pcf);

    /**
     * 小类模糊查询
     * @param pcf 小类模糊查询参数str
     * @return 返回小类集合
     */
    Result getXProductCatByLike(ProductCatForm pcf) throws DdException;

    /**
     * 根据分类模糊查询
     * @param pcf 大类名和模糊关键字
     * @return 返回小类集合
     */
    Result getXProductCatByDAndLike(ProductCatForm pcf) throws DdException;

    /**
     * 小类批量删除
     * @param pcf 根据小类catCode删除
     * @return data为null
     */
    Result deleteXProductCat(@RequestBody ProductCatForm pcf) throws DdException;

    /**
     * 新增小类
     * @param pcf 小类对象
     * @return data为null
     */
    Result saveXProductCat(@RequestBody ProductCatForm pcf) throws DdException;

    /**
     * 根据小类catCode查询所有信息
     * @param pcf catCode
     * @return data为ProductCatXInfo
     */
    Result getXProductByCatCode(ProductCatForm pcf);

    /**
     * 修改小类信息
     * @param pcf 修改信息
     * @return data为null
     */
    Result updataXProductCat(@RequestBody ProductCatForm pcf) throws DdException;

    /**
     * 根据cat_name查询
     * @param pcf catName
     * @return ProductCat
     */
    Result getDProductCatByCatName(ProductCatForm pcf);
}
